// 以下是Go语言注释的中文翻译：
//
// ```
// 版权所有 magesfc bright.ma
//
// 根据 Apache 许可证，版本 2.0（“许可证”）授权；
// 除非遵守许可证，否则您不能使用此文件。
// 您可以在以下网址获取许可证的副本：
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// 除非适用法律要求或书面同意，否则根据许可证分发的软件
// 按“原样”分发，不附带任何明示或暗示的保证或条件。
// 有关特定语言管理权限和限制的信息，请参阅许可证。
// md5:40dea2628d59d63b

package gitee

import (
	"context"
	"fmt"
)

// ActivityService 处理与 Gitee API 中与活动相关的通信方法。
// md5:32d0a3c2b95d9dbd
type ActivityService service

// ListStargazers 列出了在指定仓库中担任主角的人。
// 列出 star 了仓库的用户 GET https://gitee.com/api/v5/repos/{owner}/{repo}/stargazers
func (s *ActivityService) ListStargazers(ctx context.Context, owner, repo string, opts *ListOptions) ([]*User, *Response, error) {
	u := fmt.Sprintf("repos/%s/%s/stargazers", owner, repo)
	u, err := addOptions(u, opts)
	if err != nil {
		return nil, nil, err
	}

	req, err := s.client.NewRequest("GET", u, nil)
	if err != nil {
		return nil, nil, err
	}

	var stargazers []*User
	resp, err := s.client.Do(ctx, req, &stargazers)
	if err != nil {
		return nil, resp, err
	}

	return stargazers, resp, nil
}

// ListWatchers lists watchers of a particular repo.
//
// 列出 watch 了仓库的用户 GET https://gitee.com/api/v5/repos/{owner}/{repo}/subscribers
func (s *ActivityService) ListWatchers(ctx context.Context, owner, repo string, opts *ListOptions) ([]*User, *Response, error) {
	u := fmt.Sprintf("repos/%s/%s/subscribers", owner, repo)
	u, err := addOptions(u, opts)
	if err != nil {
		return nil, nil, err
	}

	req, err := s.client.NewRequest("GET", u, nil)
	if err != nil {
		return nil, nil, err
	}

	var watchers []*User
	resp, err := s.client.Do(ctx, req, &watchers)
	if err != nil {
		return nil, resp, err
	}

	return watchers, resp, nil
}
